From 0619971fac8bdfa416eda76c6e4494dd83c19d3a Mon Sep 17 00:00:00 2001 From: John Ericson Date: Thu, 14 Jul 2016 11:46:22 -0700 Subject: [PATCH] Fix #2595 by skipping reflexive replacements --- src/cargo/core/resolver/mod.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/cargo/core/resolver/mod.rs b/src/cargo/core/resolver/mod.rs index f95342cbf..3eb05043a 100644 --- a/src/cargo/core/resolver/mod.rs +++ b/src/cargo/core/resolver/mod.rs @@ -819,7 +819,12 @@ impl<'a> Context<'a> { assert_eq!(s.version(), summary.version()); assert_eq!(s.name(), summary.name()); - let replace = Rc::new(s); + let replace = if s.source_id() == summary.source_id() { + debug!("Preventing\n{:?}\nfrom replacing\n{:?}", summary, s); + None + } else { + Some(Rc::new(s)) + }; let matched_spec = spec.clone(); // Make sure no duplicates @@ -829,7 +834,7 @@ impl<'a> Context<'a> { matched_spec, spec, summary.package_id()); } - Ok(Candidate { summary: summary, replace: Some(replace) }) + Ok(Candidate { summary: summary, replace: replace }) }).collect() } -- 2.30.2